package cn.gyxy.Aspect;


import cn.gyxy.pojo.Guanli;
import cn.gyxy.pojo.Rizhi;
import cn.gyxy.service.RizhiService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.AuthorizationException;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;
import java.net.UnknownHostException;


@Slf4j
@Aspect
@Component
public class QuanxianAspect {




    //一  切入点 ：多种方式  我们这里使用注解方式
//    @Pointcut("bean(*service)")  //bean形式切入点
//    @Pointcut("within(cn.gyxy.service.impl.*)")
    @Pointcut("@annotation(cn.gyxy.Aspect.Bsquanxian)")//注解全类名
    public void dolog() {
    } //承载切入点注解pointcut

    //二 通知方法  好几种  我们这里使用功能最强大的环绕通知
    @Around("dolog()")
    public void doArount(ProceedingJoinPoint joinPoint) throws Throwable {
        Guanli guanli= (Guanli) SecurityUtils.getSubject().getPrincipal();//获取登录用户信息
        if (guanli.getPermission().equals(0))//判断权限等级.
            throw  new AuthorizationException();
            Object result = joinPoint.proceed();//执行目标方法

    }




}




